/**
 * 抽象类
 *    1.抽象类的作用
 *
 * 接口
 *      1.接口的概念
 *      2.接口的语法规则
 *      3.接口的使用->demo1 IUsb演示
 *      4.接口的特性->demo1演示
 *      5.实现多个接口->demo2演示
 *      6.接口间的继承->demo2Frog演示
 *      7.抽象类和接口的区别
 *
 *  Object类
 *       1.Object类的概念
 *       2.Object类的几个方法 toString() equals() hashCode()->demo3演示
 *
 *  内部类
 *       1.内部类概念
 *       2.内部类的分类->demo4演示
 *          1.静态内部类
 *          2.实例内部类
 *          3.匿名内部类
 *          4.局部内部类
 */

public class Test {
    public static void main9(String[] args) {
        /**
         * 内部类概念
         *      一个类定义在另一个类内,前者称为为内部类,后者称为为外部类
         * 注意事项
         *      1.定义在class{}外的类都不称为内部类
         *      2.内部类和外部类共用一个java文件,但是编译后,是生成两个字节码文件
         */
    }
    public static void main8(String[] args) {
        /**
         * Object:所有类的祖先
         *      无论如何,总会有一个类继承Object类
         */
    }
    public static void main7(String[] args) {
        /**
         * 接口和抽象类的区别
         *      1.抽象类中,可以包含普通成员变量,成员方法,接口中,必须是被public static final修饰的成员变量,被public abstract的抽象方法
         *      2.抽象类只能继承一次,而接口能同时实现多个,所以解决了java不能多继承问题
         */
    }
    public static void main6(String[] args) {
        /**
         * 接口间的继承
         *      接口extends接口,达到复用效果
         *      相当于把多个接口合并在一起
         */
    }
    public static void main5(String[] args) {
        /**
         * 实现多个接口
         *      1.一个类必须重写实现的所有抽象方法,否则要设为抽象类
         *      2.接口常见意思是表示某一个类有xxx特性
         *      3.不能多继承,但是可以实现多接口
         *      4.能够忘记类型,更加关注特性
         */
    }
    public static void main4(String[] args) {
        /**
         * 接口的使用
         *      class 类名 implements 接口名称 {}
         * 注
         *      1.接口不能实例化,只能通过类来实现接口中的抽象方法
         *      2.抽象类是父子关系,接口是实现关系
         */
    }
    public static void main3(String[] args) {
        /**
         * 接口的语法规则
         *      public interface 接口名 {}
         * 接口成员变量定义规则
         *      (public static final) 变量类型 变量名->()内会默认添加,可以不写
         * 接口成员方法定义规则
         *      1.(public abstract) 成员方法返回值 成员方法名(形式参数);->()内默认添加,可以不写
         *      一般的抽象方法不需要进行方法实现
         *      2.接口中,被default static修饰的方法,可以有方法实现
         * 注:
         *      1.接口命名规则必须以 I + 大驼峰名命名
         *      2.接口名称一般使用"形容词"
         *      3.ali公司编码中,接口变量 方法,均不使用任何修饰符修饰
         */
    }
    public static void main2(String[] args) {
        /**
         * 接口的概念
         *      多个类的公共规范,是一种引用类型
         *      谁符合条件,谁就可以调用
         */
    }
    public static void main1(String[] args) {
        /**
         * 抽象类的作用
         * @param args
         *      相对于普通类来说,抽象类,必须要进行抽象方法,加了一层合法性校验,便于我们检查
         */
    }
}
